/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.proyecto.modelado;

import com.proyecto.datos.ConnDB;
import com.proyecto.datos.EntityHorarioMat;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;

/**
 *
 * @author mario
 */
public class DetalleHorarioMateria {

    public ArrayList MostrarCatalagoHorariosMateria() {
        ArrayList arry = new ArrayList();
        EntityHorarioMat entHorMat = new EntityHorarioMat();
        String cadenaSQL = "select deta.id_detalle_horario_materia, mate.cod_asignatura, hora.horario,cate.nombre,cate.apellido,grupo.id_grupo "
                + "from (DETALLE_HORARIO_MATERIA deta inner join MATERIA mate on deta.MATERIA_id_materia=mate.id_materia) "
                + "inner join HORARIO hora on deta.HORARIO_id_horario=hora.id_horario "
                + "inner join CATEDRATICO cate on deta.CATEDRATICO_id_catedratico = cate.id_catedratico "
                + "inner join GRUPO grupo on deta.GRUPO_id_grupo = grupo.id_grupo "
                + "order by deta.id_detalle_horario_materia;";
        arry = entHorMat.EjecutarConsulta(cadenaSQL);
        entHorMat = null;

        return arry;
    }

    //frmAgregarAlumno*** recibe un parametro para la busqueda de horarios de hora clase
    public ArrayList MostrarCatalagoHorariosMateriaParam(int id_materia) {
        ArrayList arry = new ArrayList();
        EntityHorarioMat entHorMat = new EntityHorarioMat();
        String cadenaSQL = "select deta.id_detalle_horario_materia, mate.cod_asignatura, hora.horario,cate.nombre,cate.apellido,grupo.id_grupo "
                + "from (DETALLE_HORARIO_MATERIA deta inner join MATERIA mate on deta.MATERIA_id_materia=mate.id_materia) "
                + "inner join HORARIO hora on deta.HORARIO_id_horario=hora.id_horario "
                + "inner join CATEDRATICO cate on deta.CATEDRATICO_id_catedratico = cate.id_catedratico "
                + "inner join GRUPO grupo on deta.GRUPO_id_grupo = grupo.id_grupo "
                + "where deta.MATERIA_id_materia='" + id_materia + "' "
                + "order by deta.id_detalle_horario_materia;";
        arry = entHorMat.EjecutarConsulta(cadenaSQL);
        entHorMat = null;

        return arry;
    }

    public String InsertarNuevoHorarioMateria(int id_materia, int id_horario, int id_catedratico, int id_grupo) {
        String cadenaSQL, msj;
        EntityHorarioMat entHorMat = new EntityHorarioMat();
        cadenaSQL = "insert into DETALLE_HORARIO_MATERIA (MATERIA_id_materia,HORARIO_id_horario,CATEDRATICO_id_catedratico,GRUPO_id_grupo) "
                + "values (" + id_materia + "," + id_horario + "," + id_catedratico + "," + id_grupo + ");";
        msj = entHorMat.EjecutarComando(cadenaSQL);
        entHorMat = null;
        return msj;
    }

    public String InsertarGrupoClase(int id_materia1,int id_materia2,int id_horario, int id_catedratico, int id_grupo) {

        String msj = "Registrado con éxito";
        Connection cn;
        ConnDB db = new ConnDB();

        try {
            Class.forName(db.getDriver());
            cn = DriverManager.getConnection(db.getCadenaCon(), db.getUsuario(), db.getContrasenna());



            // se instancia el procedimiento, los parametros de entrada y salida se simbolizan con el signo ?
            CallableStatement proc = cn.prepareCall("CALL I_IAF_FIS1_MATERIA(?,?,?,?,?)");
            //se cargan los parametros de entrada

            proc.setInt("_id_materia1", id_materia1);
            proc.setInt("_id_materia2", id_materia2);
            proc.setInt("_id_horario", id_horario);
            proc.setInt("_id_catedratico", id_catedratico);
            proc.setInt("_id_grupo", id_grupo);
            // Se ejecuta el procedimiento almacenado
            proc.execute();

            db=null;
            cn.close();

        } catch (Exception ex) {
            System.out.println(ex.toString());
            msj = "No se pudo resgitrar el grupo";
        }

        return msj;

    }

//    public String InsertarFCA1_FIS2_Materia(int id_horario, int id_catedratico, int id_grupo) {
//
//        String msj = "Registrado con éxito";
//        Connection cn;
//        ConnDB db = new ConnDB();
//
//        try {
//            Class.forName(db.getDriver());
//            cn = DriverManager.getConnection(db.getCadenaCon(), db.getUsuario(), db.getContrasenna());
//
//
//
//            // se instancia el procedimiento, los parametros de entrada y salida se simbolizan con el signo ?
//            CallableStatement proc = cn.prepareCall("CALL I_FCA1_FIS2_MATERIA(?,?,?)");
//            //se cargan los parametros de entrada
//
//            proc.setInt("_id_horario", id_horario);
//            proc.setInt("_id_catedratico", id_catedratico);
//            proc.setInt("_id_grupo", id_grupo);
//            // Se ejecuta el procedimiento almacenado
//            proc.execute();
//
//
//        } catch (Exception ex) {
//            System.out.println(ex.toString());
//            msj = "No se pudo resgitrar el grupo";
//        }
//
//        return msj;
//
//    }
//
//    public String InsertarFCA2_FIS3_Materia(int id_horario, int id_catedratico, int id_grupo) {
//
//        String msj = "Registrado con éxito";
//        Connection cn;
//        ConnDB db = new ConnDB();
//
//        try {
//            Class.forName(db.getDriver());
//            cn = DriverManager.getConnection(db.getCadenaCon(), db.getUsuario(), db.getContrasenna());
//
//
//
//            // se instancia el procedimiento, los parametros de entrada y salida se simbolizan con el signo ?
//            CallableStatement proc = cn.prepareCall("CALL I_FCA2_FIS3_MATERIA(?,?,?)");
//            //se cargan los parametros de entrada
//
//            proc.setInt("_id_horario", id_horario);
//            proc.setInt("_id_catedratico", id_catedratico);
//            proc.setInt("_id_grupo", id_grupo);
//            // Se ejecuta el procedimiento almacenado
//            proc.execute();
//
//
//        } catch (Exception ex) {
//            System.out.println(ex.toString());
//            msj = "No se pudo resgitrar el grupo";
//        }
//
//        return msj;
//
//    }
//
//    public String InsertarFCA3_FIS4_Materia(int id_horario, int id_catedratico, int id_grupo) {
//
//        String msj = "Registrado con éxito";
//        Connection cn;
//        ConnDB db = new ConnDB();
//
//        try {
//            Class.forName(db.getDriver());
//            cn = DriverManager.getConnection(db.getCadenaCon(), db.getUsuario(), db.getContrasenna());
//
//
//
//            // se instancia el procedimiento, los parametros de entrada y salida se simbolizan con el signo ?
//            CallableStatement proc = cn.prepareCall("CALL I_FCA3_FIS4_MATERIA(?,?,?)");
//            //se cargan los parametros de entrada
//
//            proc.setInt("_id_horario", id_horario);
//            proc.setInt("_id_catedratico", id_catedratico);
//            proc.setInt("_id_grupo", id_grupo);
//            // Se ejecuta el procedimiento almacenado
//            proc.execute();
//
//
//        } catch (Exception ex) {
//            System.out.println(ex.toString());
//            msj = "No se pudo resgitrar el grupo";
//        }
//
//        return msj;
//
//    }

    public ArrayList MostrarGruposMateriarpt_tble(int id_materia1) {
        ArrayList arry = new ArrayList();
        EntityHorarioMat entHorMat = new EntityHorarioMat();

        String cadenaSQL = "select deta.id_detalle_horario_materia,mate.cod_asignatura, hora.horario,cate.nombre,cate.apellido, "
                + "grupo.id_grupo "
                + "from DETALLE_HORARIO_MATERIA deta inner join HORARIO hora on "
                + "deta.HORARIO_id_horario=hora.id_horario inner join MATERIA mate on "
                + "deta.MATERIA_id_materia=mate.id_materia inner join GRUPO grupo "
                + "on grupo.id_grupo = deta.GRUPO_id_grupo inner join CATEDRATICO cate on "
                + "cate.id_catedratico=deta.CATEDRATICO_id_catedratico "
                + "where mate.id_materia="+id_materia1+" order by grupo.id_grupo";


        arry = entHorMat.EjecutarConsulta(cadenaSQL);
        entHorMat = null;
        return arry;
    }
    
    
    public String eliminarGrupoMateria(int id_grupo_clase){
        String cadenaSQL;
    String msj;
    
    cadenaSQL="delete from DETALLE_HORARIO_MATERIA "
            + "where id_detalle_horario_materia ="+id_grupo_clase+";";
    EntityHorarioMat entHorMat = new EntityHorarioMat();
    msj = entHorMat.EjecutarComando(cadenaSQL);
    
    entHorMat=null;
    
    return msj;
    }
    
    
     public String ModificarGrupoMateria(int id_detalle_clase,int id_horario,int id_catedratico, int id_grupo){
        String cadenaSQL;
    String msj;
    
    cadenaSQL="update DETALLE_HORARIO_MATERIA set HORARIO_id_horario="+id_horario+", "
            + "CATEDRATICO_id_catedratico="+id_catedratico+", GRUPO_id_grupo="+id_grupo+" "
            + "where id_detalle_horario_materia="+id_detalle_clase+";";
    EntityHorarioMat entHorMat = new EntityHorarioMat();
    msj = entHorMat.EjecutarComando(cadenaSQL);
    
    entHorMat=null;
    
    return msj;
    }
}
